using System;
using System.Collections.Generic;
using System.Text;

namespace PACKETPARSERMAX20.CORE
{

    public enum SpellCastTargetFlags : uint
    {
        /*TARGET_FLAG_NONE             = 0x0000,
        TARGET_FLAG_SWIMMER          = 0x0002,
        TARGET_FLAG_ITEM             = 0x0010,
        TARGET_FLAG_SOURCE_AREA      = 0x0020,
        TARGET_FLAG_DEST_AREA        = 0x0040,
        TARGET_FLAG_UNKNOWN          = 0x0080,
        TARGET_FLAG_SELF             = 0x0100,
        TARGET_FLAG_PVP_CORPSE       = 0x0200,
        TARGET_FLAG_MASS_SPIRIT_HEAL = 0x0400,
        TARGET_FLAG_BEAST_CORPSE     = 0x0402,
        TARGET_FLAG_OBJECT           = 0x4000,
        TARGET_FLAG_RESURRECTABLE    = 0x8000*/

        TARGET_FLAG_SELF = 0x00000000,
        TARGET_FLAG_UNUSED1 = 0x00000001,               // not used in any spells as of 3.0.3 (can be set dynamically)
        TARGET_FLAG_UNIT = 0x00000002,               // guid
        TARGET_FLAG_UNUSED2 = 0x00000004,               // not used in any spells as of 3.0.3 (can be set dynamically)
        TARGET_FLAG_UNUSED3 = 0x00000008,               // not used in any spells as of 3.0.3 (can be set dynamically)
        TARGET_FLAG_ITEM = 0x00000010,               // guid
        TARGET_FLAG_SOURCE_LOCATION = 0x00000020,               // 3 float
        TARGET_FLAG_DEST_LOCATION = 0x00000040,               // 3 float
        TARGET_FLAG_OBJECT_UNK = 0x00000080,               // used in 7 spells only
        TARGET_FLAG_UNIT_UNK = 0x00000100,               // looks like self target (480 spells)
        TARGET_FLAG_PVP_CORPSE = 0x00000200,               // guid
        TARGET_FLAG_UNIT_CORPSE = 0x00000400,               // 10 spells (gathering professions)
        TARGET_FLAG_OBJECT = 0x00000800,               // guid, 2 spells
        TARGET_FLAG_TRADE_ITEM = 0x00001000,               // guid, 0 spells
        TARGET_FLAG_STRING = 0x00002000,               // string, 0 spells
        TARGET_FLAG_UNK1 = 0x00004000,               // 199 spells, opening object/lock
        TARGET_FLAG_CORPSE = 0x00008000,               // guid, resurrection spells
        TARGET_FLAG_UNK2 = 0x00010000,               // guid, not used in any spells as of 3.0.3 (can be set dynamically)
        TARGET_FLAG_GLYPH = 0x00020000                // used in glyph spells
    };

    public enum SpellCastFlags : uint
    {
        CAST_FLAG_NONE = 0x00000000,
        CAST_FLAG_UNKNOWN0 = 0x00000001,              // may be pending spell cast
        CAST_FLAG_UNKNOWN1 = 0x00000002,
        CAST_FLAG_UNKNOWN11 = 0x00000004,
        CAST_FLAG_UNKNOWN12 = 0x00000008,
        CAST_FLAG_UNKNOWN2 = 0x00000010,
        CAST_FLAG_AMMO = 0x00000020,              // Projectiles visual
        CAST_FLAG_UNKNOWN8 = 0x00000040,
        CAST_FLAG_UNKNOWN9 = 0x00000080,
        CAST_FLAG_UNKNOWN3 = 0x00000100,
        CAST_FLAG_UNKNOWN13 = 0x00000200,
        CAST_FLAG_UNKNOWN14 = 0x00000400,
        CAST_FLAG_UNKNOWN6 = 0x00000800,              // wotlk, trigger rune cooldown
        CAST_FLAG_UNKNOWN15 = 0x00001000,
        CAST_FLAG_UNKNOWN16 = 0x00002000,
        CAST_FLAG_UNKNOWN17 = 0x00004000,
        CAST_FLAG_UNKNOWN18 = 0x00008000,
        CAST_FLAG_UNKNOWN19 = 0x00010000,
        CAST_FLAG_UNKNOWN4 = 0x00020000,              // wotlk
        CAST_FLAG_UNKNOWN10 = 0x00040000,
        CAST_FLAG_UNKNOWN5 = 0x00080000,              // wotlk
        CAST_FLAG_UNKNOWN20 = 0x00100000,
        CAST_FLAG_UNKNOWN7 = 0x00200000,              // wotlk, rune cooldown list
        CAST_FLAG_UNKNOWN21 = 0x04000000
    };


    public enum SpellNotifyPushType
    {
        PUSH_IN_FRONT,
        PUSH_IN_BACK,
        PUSH_SELF_CENTER,
        PUSH_DEST_CENTER,
        PUSH_TARGET_CENTER
    };

    public enum SpellState : int
    {
        SPELL_STATE_NULL = 0,
        SPELL_STATE_PREPARING = 1,
        SPELL_STATE_CASTING = 2,
        SPELL_STATE_FINISHED = 3,
        SPELL_STATE_IDLE = 4,
        SPELL_STATE_DELAYED = 5
    };

    public enum ReplenishType : int
    {
        REPLENISH_UNDEFINED = 0,
        REPLENISH_HEALTH = 20,
        REPLENISH_MANA = 21,
        REPLENISH_RAGE = 22
    };

    public enum SpellTargets
    {
        SPELL_TARGETS_HOSTILE,
        SPELL_TARGETS_NOT_FRIENDLY,
        SPELL_TARGETS_NOT_HOSTILE,
        SPELL_TARGETS_FRIENDLY,
        SPELL_TARGETS_AOE_DAMAGE
    };


}
